Software Architectual Design process